//----------------uunknow 是any的安全类型，泛型没有赋予值的时候，默认是就是unknowu----------------
let val:unknown=true;
let val1:any=true;
// val() //会检查类型
val1() //不会检查类型
//----------------u默认情况下，unknow必须进行类型检测才能使用，比如：类型检查、类型断言----------------u
function processInput(val:unknown){
    //1、需要经过类型检查才能使用
    if(typeof val==='string'){
        val.toLocaleLowerCase()
    }else if(typeof val==='number'){
        val.toFixed()
    }

}
//2、需要进行类型断言才能使用
(val as number).toFixed()

//-----------------unknown在联合类型合交叉类型中的特点-------------------
type UnionUnknow=unknown | string //unknown和任何类型做联合类型都是unknown
type UnionAny=unknown | string //any和任何类型做联合类型都是unknown
type InterUnknow=unknown & string//unknown和任何类型做作交叉类型，就是string
type InterAny=any & string//any和任何类型做作交叉类型，就是any

//-----------------怎么区分是unknow和 any ------------------
//可以采用交叉类型
type InterUnknow1=unknown & string//unknown和任何类型做作交叉类型，就是string
type InterAny2=any & string//any和任何类型做作交叉类型，就是any
type keyof=keyof unknown //never,不能用keyof来获取unknow类型
type keyofany=keyof any//type keyofany = string | number | symbol
export {}